package cn.keduox.service.impl;

import cn.keduox.dao.impl.*;
import cn.keduox.entity.*;

import java.util.List;

/**
 * User: Yongman
 * Date: 2018/1/3
 */
public class HotBookTypeServiceImpl {
    /**
     * 查询推荐图书
     *
     * @return
     */
    public List<HotBookType> query() {
//        创建相应实体对象
        HotBookTypeDaoImpl hotBookTypeDao = new HotBookTypeDaoImpl();
        HotBookDaoImpl hotBookDao = new HotBookDaoImpl();
        try {
//            查询畅销类型
            List<HotBookType> hotBookTypeList = hotBookTypeDao.select(new HotBookType(), false, false, new PageBean(), false,null);
            if (hotBookTypeList != null && hotBookTypeList.size() > 0) {
                for (HotBookType hbt : hotBookTypeList) {
//                    查询热销榜对应的推荐书籍
                    String typeId = hbt.getId();
                    HotBook hotBook = new HotBook();
                    hotBook.setTypeId(typeId);
//                    根据类型查询
                    List<HotBook> hotBookList = hotBookDao.select(hotBook, false, false, new PageBean(), false,"hot");
                    if (hotBookList != null && hotBookList.size() > 0) {
//                        将集合添加到HotBookType属性中
                        hbt.setHotBookList(hotBookList);
//                        调用查询书籍信息方法
                        queryBook(hotBookList);
                    }
                }
                return hotBookTypeList;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 根据类型查
     *
     * @return
     */
    public List<HotBook> queryByType(String type,PageBean pageBean) {
//        创建响应实体
        HotBookDaoImpl hotBookDao = new HotBookDaoImpl();
        HotBook hotBook = new HotBook();
        try {
//            默认查询1类型
            if (type==null||"".equals(type)){
                type="1";
            }
            hotBook.setTypeId(type);
//            每页显示数量
            pageBean.setCurrentCount(1);
//            根据类型查询

            List<HotBook> hotBookList = hotBookDao.select(hotBook, false, false, pageBean, false,"hot");
            if (hotBookList != null && hotBookList.size() > 0) {
//                设置分页属性
                int count = hotBookDao.queryCount(type);
                pageBean.setTotalCount(count);
                pageBean.setTotalPage((int) Math.ceil(count/pageBean.getCurrentCount()));
                hotBookList.get(0).setPageBean(pageBean);
//                调用查询书籍信息方法
                queryBook(hotBookList);
                return hotBookList;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 查询书籍
     * @param hotBookList 热销书集合
     */
    public void queryBook(List<HotBook> hotBookList){
        BookDaoImpl bookDaoImpl = new BookDaoImpl();
        try {
//         将集合添加到HotBookType属性中
            for (HotBook hb : hotBookList) {
//             获取书籍id
                String bookId = hb.getBookId();
                Book b = new Book();
                b.setId(bookId);
//             根据书籍id查询书籍信息
                List<Book> bookList = bookDaoImpl.select(b, false, false, new PageBean(), false,null);
                if (bookList != null && bookList.size() != 0) {
                    hb.setBook(bookList.get(0));
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
